Make gtk_box_set_center_widget take NULL
authorMatthias Clasen <mclasen@redhat.com>
Wed, 19 Feb 2014 02:16:35 +0000 (21:16 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 19 Feb 2014 03:50:37 +0000 (22:50 -0500)
It makes sense to allow this, and gtk_action_bar_set_center_widget
already assumes that it can pass NULL to this function.

gtk/gtkbox.c

index 062008130f017f4d150b60af907d74082ed0fe21..f67770b38c8f32b0ca61f60a9d5316cab9648d48 100644 (file)
@@ -2585,7 +2585,7 @@ _gtk_box_get_children (GtkBox *box)
 /**
  * gtk_box_set_center_widget:
  * @box: a #GtkBox
- * @widget: the widget to center
+ * @widget: (allow-none): the widget to center
  *
  * Sets a center widget; that is a child widget that will be
  * centered with respect to the full width of the box, even
@@ -2598,11 +2598,14 @@ void
 gtk_box_set_center_widget (GtkBox    *box,
                            GtkWidget *widget)
 {
+  GtkBoxPrivate *priv = box->priv;
+
   g_return_if_fail (GTK_IS_BOX (box));
 
-  box->priv->center = gtk_box_pack (box, widget,
-                                    FALSE, TRUE, 0,
-                                    GTK_PACK_START);
+  if (widget)
+    priv->center = gtk_box_pack (box, widget, FALSE, TRUE, 0, GTK_PACK_START);
+  else if (priv->center)
+    gtk_box_remove (GTK_CONTAINER (box), priv->center->widget);
 }
 
 /**
@@ -2618,10 +2621,12 @@ gtk_box_set_center_widget (GtkBox    *box,
 GtkWidget *
 gtk_box_get_center_widget (GtkBox *box)
 {
+  GtkBoxPrivate *priv = box->priv;
+
   g_return_val_if_fail (GTK_IS_BOX (box), NULL);
 
-  if (box->priv->center)
-    return box->priv->center->widget;
+  if (priv->center)
+    return priv->center->widget;
 
   return NULL;
 }